1. Field of the Invention
The present invention relates generally to graphic user interfaces (GUIs) for computer programs and, more particularly, to a method, system, and computer program product for enabling variable distribution of graphics or other objects/elements on a computerized drawing surface such as a GUI window.
2. Description of the Related Art
Graphical user interfaces (GUIs) are routinely employed by software programs operating in data processing systems to simplify their user interfaces or make the software programs “user-friendly”. A GUI typically utilizes a “desktop” or “workplace” which is presented to a user via a display screen. In the pervasive windowing-based GUIs used by many operating systems and computer software programs, a user is required to recognize and utilize a myriad of GUI elements or objects. An object is a visual component of a user interface which a user works with to perform a task. An object can appear as text, a pictorial representation (also known as a glyph), or a combination of both. Different types of objects include icons, windows, toolbars, faceplates, buttons, etc. Objects are usually different in different programs, and often change for different desktops in the same program.
A window is an area with visible boundaries within which a user conducts a dialog with a computer system. A window is a GUI element that presents a view of an object, and is typically relatively large. A window makes available different functions to the user, depending upon the type of program with which the window is associated. For example, a drawing program utilized for drawing flowcharts, wiring diagrams, and the like will present the user with a window comprising a “drawing surface”. In a software development tool, the window might be referred to as a graphical editor surface, a visual design canvas, or a WYSIWIG preview surface.
GUIs allow users to manipulate the location of elements in the desktop using a technique known as “drag and drop”. By manipulating a mouse and a mouse button, users are able to drag one or more elements (e.g., icons, objects drawn with a drawing program, photographic images, etc.) to new locations within the desktop, where they are “dropped”. If desired, several objects can be designated for moving at one time, e.g., by “clicking” on the elements while holding down the “Ctrl” key on the keyboard. Once all desired elements are designated for moving, a right-click operation allows the designated elements to be dragged and dropped to a new location.
It is often desirable to distribute elements displayed in the window uniformly, e.g., for ease of use and/or for organizational or aesthetic reasons. For example, the icons displayed on a desktop can get so large in quantity that what is known as the “messy desktop” scenario becomes a problem, and a user may wish to tidy up the desktop. Similarly, in a drawing program, for example, it may be desirable to align two or more drawn images so that they are centered along a same axis or so they are spaced apart evenly. This alignment is generically known as distribution and the axis can be either vertical, horizontal, or both. The example described below is for vertical distribution along the vertical or “y” axis, but it can be applied equally to horizontal distribution along the horizontal or “x” axis.
To avoid the need to manually move each object and align it with precision in the desired location, automatic methods for doing this arranging were developed. On a Windows desktop, for example, a user may select a menu or toolbar option which allows the desktop icons to be arranged alphabetically, by date, file size, file type, etc., and be evenly spaced and distributed in alignment with an edge of the desktop window. Similarly, with respect to drawing programs, automatic selections exist which allow the designation of objects in the drawing window and their automatic alignment, spacing, etc.
The prior art automatic alignment/distribution systems described above rely on a concept known as “bounding box” distribution. In bounding box distribution, the elements to be distributed are conceptually “enclosed” in a box that is invisible on the computer screen. The box is either equal in size to the entire computer screen or, if elements are selected for inclusion in the distribution, its dimensions are defined by the outermost elements around which the imaginary or virtual box is to be formed. The sides of the bounding box define the area in which the elements will be distributed. The size of the box is not determined by the user but is instead defined by the position of the elements, and the box itself is invisible.
While this method functions sufficiently, it is not without its drawbacks. For example, to change the area of the window in which the elements will be distributed (and thus, albeit unknowingly, change the size of the invisible bounding box), the user must manipulate the elements themselves. Further, if no graphics are selected, the elements will be distributed within the bounds of the entire drawing surface as noted above.
Accordingly, it would be desirable to have a method for distributing icons in which the size of the bounding box was selectable without regard to the positioning of any of the elements within the window.